# -*- coding: utf -8 -*-
from sqlalchemy import create_engine
# a base de dados e do tipo SQLite3
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import relationship, backref
from sqlalchemy import Column, Integer, String, ForeignKey

engine = create_engine ('sqlite:///treta.db', echo = True)
Base = declarative_base()
class Naturalidade(Base):
	__tablename__ = 'naturalidades'
	id = Column (Integer, primary_key=True)
	nome = Column(String)
	def __init__(self,nome):
		self.nome = nome
class Aluno (Base):
	__tablename__ = 'alunos'
	id = Column (Integer, primary_key = True)
	nome = Column (String)
	numero = Column (Integer)
	curso = Column (String)
	naturalidade_id = Column (Integer, ForeignKey ('naturalidades.id'))
	naturalidade = relationship ("Naturalidade", backref = backref ('alunos', order_by = id))
	
	def __init__ (self, nome, numero, curso, naturalidade):
		self.nome = nome
		self.numer = numero
		self.curso = curso
		self.naturalidade = naturalidade
	
Base.metadata.create_all (engine)

#INSERT em naturalidades
Session = sessionmaker (bind = engine)
session = Session()
portugal = Naturalidade ('Portugal')
espanha = Naturalidade ('Espanha')
franca = Naturalidade ('Franca')
session.add(portugal)
session.add(espanha)
session.add(franca)
session.commit()

#INSERT into alunos
aluno1 = Aluno ('Tiago Bond', '007', 'Espeologia', portugal)
aluno2 = Aluno ('Chico Bond', '007', 'Espeologia', portugal)
aluno3 = Aluno ('Legionella Bond', '007', 'Espeologia', portugal)

session.add (aluno1); session.add(aluno2); session.add (aluno3)
session.commit()

print "Nomes"

for obj in session.query(Aluno):
	print obj.nome.upper()
print

for obj in session.query(Aluno).filter (Aluno.nome == 'Chico Bond'):
	print "informacao sobre:"
	print "nome = ", obj.nome
	print "number {0} e curso {1}".format (obj.numero, obj.curso.upper())
